#ifndef WINDOW_H
#define WINDOW_H
    struct Window;
    
    typedef struct Window* (*fCreateWind)(int vis);
    typedef void (*fSetWindowSize)(Window* win, int w,int h);
    typedef void (*fSetWindowVisible)(Window* win, int vis);
    typedef void (*fCloseWindow)(Window** win);
    typedef void (*fMakeCurrentContext)(Window* win);
    typedef void (*fSwapBuffer)(Window* win);
    
    typedef struct tagWindowNative {
        fCreateWind createWindow;
        fSetWindowSize setWindowSize;
        fSetWindowVisible setWindowVisible;
        fCloseWindow closeWindow;
        fMakeCurrentContext makeCurrentContext;
        fSwapBuffer swapBuffer;
    }WindowNative, *PWindowNative;
    
    typedef WindowNative (*GetWindowDrive)();
    
    #ifdef __cplusplus
    extern "C" {
    #endif
        extern GetWindowDrive getWindowDrive;
    #ifdef __cplusplus
    }
    #endif
    
#endif


